查看原文
其他

C#离线人脸识别使用ArcFace 2.0开发

DotNet 2019-08-02

(给DotNet加星标,提升.Net技能


转自:深蓝s

cnblogs.com/bodaren/p/10334767.html


一、环境


  • win7以上  VS2013以上


  • sdk版本:ArcFace v2.0


  • x86 x64平台Debug、Release配置都已通过编译


下载地址:https://github.com/ArcsoftEscErd/ArcfaceDemo_CSharp.git

 

二、配置过程


1.  到虹软官网下载SDK2.0版本(https://ai.arcsoft.com.cn/index.htm?utm_source=aaa&utm_medium=referral);


2.  解压下载的x86或x64的zip包,本Demo以x64为例;



3.  选择平台,如:Debug x64,将libarcsoft_face.dll和libarcsoft_face_engine.dll放到bin\x64\Debug下;



4.  修改工程下App.config配置文件中的APP_ID和对应的SDKKEY64的值;



5.  点击启动或者F5启动;


6.  其他详细信息请阅读项目中doc目录下的说明文档。


三、常见问题


1、后引擎初始化失败              


  1. 请选择对应的平台,如x64,x86        


  2. 删除bin下面对应的asf_install.dat,freesdk_132512.dat;

            

  3. 请确保App.config下的appid,和appkey与当前sdk一一对应。  

 

2、SDK支持那些格式的图片人脸检测?               


目前SDK支持的图片格式有jpg,jpeg,png,bmp等。        


3、使用人脸检测功能对图片大小有要求吗?               


推荐的图片大小最大不要超过2M,因为图片过大会使人脸检测的效率不理想,当然图片也不宜过小,否则会导致无法检测到人脸。


4、使用人脸识别引擎提取到的人脸特征信息是什么?               


人脸特征信息是从图片中的人脸上提取的人脸特征点,是byte[]数组格式。


5、SDK人脸比对的阈值设为多少合适?               


推荐值为0.8,用户可根据不同场景适当调整阈值。        


6、可不可以将人脸特征信息保存起来,等需要进行人脸比对的时候直接拿保存好的人脸特征进行比对?        


可以,当人脸个数比较多时推荐先存储起来,在使用时直接进行比对,这样可以大大提高比对效率。存入数据库时,请以Blob的格式进行存储,不能以string或其他格式存储。        


7、在.NET项目中出现堆栈溢出问题,如何解决?      

 

.NET平台设置的默认堆栈大小为256KB,SDK中需要的大小为512KB以上,推荐调整堆栈的方法为:        


new Thread(new ThreadStart(delegate
{
ASF_MultiFaceInfo multiFaceInfo = FaceUtil.DetectFace
(pEngine, imageInfo);        
}), 1024 * 512).Start();


8、X86模式下批量注册人脸有内存溢出或图片空指针               


请增加虚拟内存或每次批量注册人脸控制在20张图片范围内 


9、图片中有人脸,但是检测时未检测到人脸   

            

1、请调整detectFaceScaleVal的值;   

   

2、请确认图片的宽度是否为4的倍数; 

       

3、请确认图片是否通过ImageUtil.ReadBMP方法进行数据调整。


推荐阅读

(点击标题可跳转阅读)

.NET关于人脸识别引擎分享

C#编写TensorFlow人工智能应用

C#实现基于ffmpeg加虹软的人脸识别


看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

喜欢就点一下「好看」呗~

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存